const express = require('express')
const app = express()

// 导入时间对象
const moment = require("moment")

// 内置模块 => fs
const fs = require("fs")

// 解决跨域的问题
//使用cors解决跨域
const cors = require('cors')
app.use(cors())

// post请求的参数问题
//post请求获取数据,让数据在body里面
bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended:false}))
app.use(bodyParser.json())

// 全局中间件 => 也是一个一级拦击器
app.use((req,res,next)=>{
    // 获取请求人的IP地址
    let ip = (req.headers['x-real-ip'] || req.connection.remoteAddress).slice(7);
    //生成一个日志信息 req.url => 获取请求的URL地址
    let log = req.url +" "+ ip + moment().format("YYYY年MM月DD日 HH时mm分ss秒")+" \n "
    // 将日志信息追加到文件当中
    fs.appendFile("log.txt",log,(err)=>{
        if(err) next(301)
        // 如果没有报错,那么就放行
        next()
    })
})


// 一级路由
app.use("/api",require("./router/index.js"))


// 错误中间件
app.use((err,req,res,next)=>{
    switch(err){
        case 301:
            res.send({code:301,msg:"服务器异常!请联系管理员..."})
            break;
    }
})


//开放静态资源
app.use(express.static('public'))
app.listen(8080);